namespace OpenCalais.Domain
{
    /// <summary>
    /// The type of the node that includes the tentire transaction: paramsXML and the submitted content
    /// </summary>
    [RDFAbout("http://s.opencalais.com/1/type/sys/DocInfo")]
    public class DocInfo
  : Resource  {
        /// <summary>
        /// Indicates whether tghe extracted metadata can be distributed (user directive in paramsXML)
        /// </summary>
        [RDFAbout("http://s.opencalais.com/1/pred/allowDistribution")]
        public string AllowDistribution { get; set; }

        /// <summary>
        /// Indicates whether future searches can be performed on the extracted metadata (user directive in paramsXML)
        /// </summary>
        [RDFAbout("http://s.opencalais.com/1/pred/allowSearch")]
        public string AllowDearch { get; set; }

        /// <summary>
        /// Unique identifier for the processed request
        /// </summary>
        [RDFAbout("http://s.opencalais.com/1/pred/calaisRequestID")]
        public string CalaisRequestID { get; set; }

        /// <summary>
        /// Indicates whether the extracted metadata will icnlude relevance score for each unique entity (processing directive in paramsXML)
        /// </summary>
        [RDFAbout("http://s.opencalais.com/1/pred/calculateRelevanceScore")]
        public string CalculateRelevanceScore { get; set; }

        /// <summary>
        /// Used internally by various Calais apps
        /// </summary>
        [RDFAbout("http://s.opencalais.com/1/pred/caller")]
        public string Caller { get; set; }

        /// <summary>
        /// Indicates whether the output will exclude Entity Disambiguation results (processing directives in paramsXML)
        /// </summary>
        [RDFAbout("http://s.opencalais.com/1/pred/discardMetadata")]
        public string DiscardMetadata { get; set; }

        /// <summary>
        /// Identified date of the submitted content (if mentioned)
        /// </summary>
        [RDFAbout("http://s.opencalais.com/1/pred/docDate")]
        public string DocDate { get; set; }

        /// <summary>
        /// Document title as identified by Calais (could also be empty)
        /// </summary>
        [RDFAbout("http://s.opencalais.com/1/pred/docTitle")]
        public string DocTitle { get; set; }

        /// <summary>
        /// Original content submitted converted into a Calais XML
        /// </summary>
        [RDFAbout("http://s.opencalais.com/1/pred/document")]
        public string Document { get; set; }

        /// <summary>
        /// Indicates whether the output (RDF only) will include Generic Relation extractions (processing directive in paramsXML)
        /// </summary>
        [RDFAbout("http://s.opencalais.com/1/pred/enableMetadataType")]
        public string EnableMetaDataType { get; set; }

        /// <summary>
        /// Indicates whether the extracted metadata can be distributed (user directive in paramsXML)
        /// </summary>
        [RDFAbout("http://s.opencalais.com/1/pred/externalID")]
        public string ExternalID { get; set; }

        /// <summary>
        /// External Metadate section as submitted by the user
        /// </summary>
        [RDFAbout("http://s.opencalais.com/1/pred/externalMetadata")]
        public string ExternalMetaData { get; set; }

        /// <summary>
        /// Shortened version of the docId
        /// </summary>
        [RDFAbout("http://s.opencalais.com/1/pred/id")]
        public string Id { get; set; }

        /// <summary>
        /// Format of the returned results (processing directive in paramsXML)
        /// </summary>
        [RDFAbout("http://s.opencalais.com/1/pred/outputFormat")]
        public string OutputFormat { get; set; }

        /// <summary>
        /// Base URL to be put in rel-tag microformats (processing directives in paramsXML)
        /// </summary>
        [RDFAbout("http://s.opencalais.com/1/pred/reltagBaseURL")]
        public string RelTagBaseURL { get; set; }

        /// <summary>
        /// Identifier for the content submitter (user directive in paramsXML)
        /// </summary>
        [RDFAbout("http://s.opencalais.com/1/pred/submitter")]
        public string Submitter { get; set; }
    }
}